<script>
	import chatManager from '@/utils/chat.js'
	
	export default {
		globalData: {
			unreadMessageCount: 0,
			currentUserId: null
		},
		
		onLaunch: function() {
			console.log('App Launch')
			this.initializeApp()
		},
		
		onShow: function() {
			console.log('App Show')
			// 应用从后台回到前台时，确保WebSocket连接正常
			this.ensureWebSocketConnection()
		},
		
		onHide: function() {
			console.log('App Hide')
			// 应用进入后台时不断开连接，保持在线状态
		},
		
		methods: {
			// 初始化应用
		async initializeApp() {
			try {
				console.log('开始初始化应用...')
				
				// 从本地存储获取用户信息
				const userInfo = uni.getStorageSync('userInfo')
				console.log('获取到的用户信息:', userInfo)
				
				if (userInfo && userInfo.id) {
					console.log('找到用户ID:', userInfo.id)
					this.globalData.currentUserId = userInfo.id
					await this.connectWebSocket(userInfo.id)
				} else {
					console.log('未找到用户信息，跳过WebSocket连接')
					
					// 尝试从其他存储位置获取用户ID
					const userId = uni.getStorageSync('userId')
					console.log('尝试从userId存储获取:', userId)
					
					if (userId) {
						console.log('使用userId建立连接:', userId)
						this.globalData.currentUserId = userId
						await this.connectWebSocket(userId)
					}
				}
			} catch (error) {
				console.error('应用初始化失败:', error)
			}
		},
			
			// 建立WebSocket连接
		async connectWebSocket(userId) {
			try {
				console.log('开始建立WebSocket连接，用户ID:', userId)
				
				// 导入聊天管理器
				const chatManager = (await import('@/utils/chat.js')).default
				console.log('聊天管理器导入成功')
				
				// 建立连接
				await chatManager.connect(userId)
				console.log('WebSocket连接建立成功')
				
				// 设置全局消息处理器
				chatManager.setGlobalMessageHandler(this.handleGlobalMessage)
				console.log('全局消息处理器设置完成')
				
				console.log('全局WebSocket连接已建立')
			} catch (error) {
				console.error('WebSocket连接失败:', error)
			}
		},
			
			// 确保WebSocket连接正常
			async ensureWebSocketConnection() {
				if (this.globalData.currentUserId && !chatManager.getConnectionStatus()) {
					console.log('重新建立WebSocket连接')
					await this.connectWebSocket(this.globalData.currentUserId)
				}
			},
			
			// 处理全局消息
			handleGlobalMessage(message) {
				// 过滤自己消息
				if (message && message.isOwn) return

				// 非自己消息计数
				this.globalData.unreadMessageCount++
				uni.$emit('newMessage', { message, unreadCount: this.globalData.unreadMessageCount })

				// 仅在非聊天页提示
				const pages = getCurrentPages()
				const currentPage = pages[pages.length - 1]
				const currentRoute = (currentPage && currentPage.route) ? currentPage.route : ''
				const inChat = currentRoute.includes('chat/chat') || currentRoute.includes('/pages/chat/chat')
				if (!inChat) {
					this.showMessageNotification(message)
				}
			},
			
			// 显示消息通知
			showMessageNotification(message) {
				uni.showToast({
					title: `收到新消息: ${message.content.substring(0, 10)}...`,
					icon: 'none',
					duration: 2000
				})
			},
			
			// 清除未读消息计数
			clearUnreadCount() {
				this.globalData.unreadMessageCount = 0
				uni.$emit('unreadCountChanged', 0)
			},
			
			// 设置当前用户ID
			setCurrentUserId(userId) {
				this.globalData.currentUserId = userId
				if (userId) {
					this.connectWebSocket(userId)
				}
			}
		}
	}
</script>

<style>
	/*每个页面公共css */
</style>
